نوشته شده توسط : مهشید افخمی

پروتکل ICMP

پروتکل ICMP چیست؟

روتکل Internet Control Message Protocol (ICMP) یک پروتکل لایه (3) شبکه است که توسط تجهیزات شبکه برای تشخیص مشکلات ارتباط شبکه استفاده می شود. ICMP عمدتاً برای تعیین اینکه آیا داده ها به موقع به مقصد مورد نظر خود می رسند یا نه استفاده می شود. معمولاً پروتکل ICMP در دستگاه های شبکه مانند روترها استفاده می شود. ICMP برای گزارش و آزمایش خطا بسیار مهم است، اما می‌تواند در حملات انکار سرویس توزیع شده (DDoS) نیز استفاده شود.

ICMP برای چه مواردی استفاده می شود؟

هدف اصلی ICMP گزارش خطا است. هنگامی که دو دستگاه از طریق اینترنت به یکدیگر متصل می شوند، ICMP خطاهایی ایجاد می کند تا در صورتی که هر یک از داده ها به مقصد مورد نظر خود نرسیده باشد، با دستگاه فرستنده به اشتراک بگذارد. به عنوان مثال، اگر یک بسته داده برای یک روتر خیلی بزرگ باشد، روتر بسته را رها می کند و یک پیام ICMP برای داده ها به منبع اصلی ارسال می کند.

استفاده ثانویه از پروتکل ICMP برای انجام تشخیص شبکه است. ابزارهای ترمینال رایج مانند traceroute و ping هر دو با استفاده از ICMP کار می کنند.

ابزار traceroute برای نمایش مسیر مسیریابی بین دو دستگاه اینترنتی استفاده می شود. این مسیر، مسیر فیزیکی واقعی روترهای متصل است که درخواست باید قبل از رسیدن به مقصد از آن عبور کند. مسیر بین یک روتر و روتر دیگر به عنوان “hop” شناخته می شود و یک traceroute همچنین زمان مورد نیاز برای هر hop در طول مسیر را گزارش می دهد. این می تواند برای تعیین منابع تاخیر شبکه مفید باشد.

ابزار ping یک نسخه ساده شده از traceroute است. یک ping سرعت اتصال بین دو دستگاه را آزمایش می کند و دقیقاً گزارش می دهد که چقدر طول می کشد یک بسته داده به مقصد برسد و به دستگاه فرستنده بازگردد. اگرچه ping اطلاعاتی در مورد مسیریابی یا hop ارائه نمی دهد، اما هنوز یک معیار بسیار مفید برای اندازه گیری تأخیر بین دو دستگاه است. پیام های ICMP echo-request و echo-reply معمولاً برای انجام ping استفاده می شوند.

متأسفانه حملات شبکه می توانند از این فرآیند سوء استفاده کنند و ابزارهایی برای ایجاد اختلال مانند ICMP flood attack و حمله ping of death attack ایجاد کنند.

ICMP چگونه کار می کند؟

برخلاف پروتکل اینترنت (IP)، ICMP با پروتکل لایه transport (انتقال) مانند TCP یا UDP مرتبط نیست. این باعث می شود ICMP یک پروتکل بدون اتصال (connectionless) باشد: یک دستگاه نیازی به باز کردن اتصال با دستگاه دیگر قبل از ارسال پیام ICMP ندارد. ترافیک IP معمولی با استفاده از TCP ارسال می شود، به این معنی که هر دو دستگاهی که داده ها را مبادله می کنند، ابتدا TCP handshake انجام می دهند تا اطمینان حاصل شود که هر دو دستگاه برای دریافت داده آماده هستند.

 ICMP یک اتصال را به این روش باز نمی کند. پروتکل ICMP همچنین اجازه هدف قرار دادن یک پورت خاص روی یک دستگاه را نمی دهد.

چگونه از ICMP در حملات DDoS استفاده می شود؟

 

ـ ICMP flood attack:

پروتکل ICMP

ping flood یا ICMP flood زمانی است که مهاجم سعی می‌کند یک دستگاه هدف را با بسته‌های echo-request ICMP در هم بشکند. هدف، باید هر بسته را پردازش کرده و به آن پاسخ دهد و منابع محاسباتی آن را مصرف کند تا زمانی که کاربران قانونی نتوانند سرویس را دریافت کنند.

ـ Ping of death attack:

پروتکل ICMP

این حمله زمانی است که مهاجم پینگی بزرگتر از حداکثر اندازه مجاز برای یک بسته را به یک ماشین هدف ارسال می کند و باعث خراب شدن دستگاه می شود. بسته در راه رسیدن به هدف خود تکه تکه می شود، اما زمانی که هدف، بسته را به حداکثر اندازه اصلی خود جمع می کند، اندازه بسته باعث سرریز بافر می شود.این نوع حمله در حال حاضر خیلی کم اتفاق می افتد، با این حال تجهیزات شبکه قدیمی‌تر هنوز هم می‌توانند در معرض آن باشند.

ـ Smurf attack:

پروتکل ICMP

در حمله Smurf، مهاجم یک بسته ICMP را با یک آدرس IP مبدا جعلی ارسال می کند. تجهیزات شبکه به بسته پاسخ می دهد، پاسخ ها را به IP جعلی ارسال می کند و قربانی را با بسته های ICMP ناخواسته پر می کند. مانند ” Ping of death”، امروز حمله اسمورف فقط با تجهیزات قدیمی امکان پذیر است.

ICMP تنها پروتکل لایه شبکه مورد استفاده در حملات DDoS لایه 3 نیست. به عنوان مثال، مهاجمان در گذشته از بسته های GRE نیز استفاده کرده اند.

به طور معمول، حملات DDoS لایه شبکه، تجهیزات و زیرساخت شبکه را هدف قرار می دهند، در مقابل حملات DDoS لایه برنامه، که ویژگی های وب را هدف قرار می دهند.

 

پارامترهای ICMP:

پروتکل ICMP

پارامترهای ICMP در هدر بسته وجود دارند و به شناسایی خطاهای بسته IP که مربوط به آن هستند کمک می کنند. پارامترها مانند یک برچسب حمل و نقل روی یک بسته هستند. آنها اطلاعات شناسایی بسته و داده های موجود در آن را ارائه می دهند. به این ترتیب، پروتکل ها و ابزارهای شبکه که پیام ICMP را دریافت می کنند، می دانند که چگونه بسته را مدیریت کنند.

32 بیت اول هدر بسته هر پیام ICMP شامل سه فیلد اطلاعاتی یا پارامتر است. این سه پارامتر به شرح زیر است:

  1. Type: 8 بیت اول پیام Type هستند. برخی از انواع رایج ان شامل موارد زیر است:

Type 0:  Echo reply

Type 3 :  Destination unreachable

Type 8 :  Echo

Type 5 :  Redirect

Type توضیح مختصری در مورد اینکه پیام برای چیست ارائه می دهد تا دستگاه شبکه دریافت کننده بداند چرا پیام را دریافت می کند و چگونه با آن رفتار کند. به عنوان مثال، یک Echo درخواستی است که میزبان ارسال می کند تا ببیند آیا یک سیستم مقصد بالقوه در دسترس است یا خیر. به محض دریافت پیام Echo ، دستگاه دریافت کننده ممکن است یک پاسخ Echo reply (0Type) ارسال کند که نشان می دهد در دسترس است.

  1. Code: 8 بیت بعدی نشان دهنده نوع Code پیام است که اطلاعات بیشتری در مورد نوع خطا ارائه می دهد.
  2. Checksum: 16 بیت آخر یک بررسی یکپارچگی پیام را ارائه می دهد. Checksum تعداد بیت‌ها را در کل پیام نشان می‌دهد و ابزار ICMP را قادر می‌سازد تا سازگاری با هدر پیام ICMP را بررسی کند تا مطمئن شود دامنه کامل داده تحویل داده شده است.
  3. قسمت بعدی هدر ICMP، pointer است. این شامل 32 بیت داده است که مشکل را در پیام IP اصلی نشان می دهد. به طور خاص، pointer مکان بایت را در پیام IP اصلی که باعث ایجاد پیام مشکل شده است، شناسایی می کند. دستگاه دریافت کننده به این قسمت از هدر نگاه می کند تا مشکل را مشخص کند.
  4. بخش آخر بسته ICMP ، datagram اصلی است. این شامل حداکثر 576 بایت در IPv4 و 1280 بایت در IPv6 است و شامل یک کپی از پیام IP اصلی حاوی خطا است.

منبع : پروتکل ICMP





:: بازدید از این مطلب : 582
|
امتیاز مطلب : 0
|
تعداد امتیازدهندگان : 0
|
مجموع امتیاز : 0
تاریخ انتشار : پنج شنبه 13 آبان 1400 | نظرات ()
مطالب مرتبط با این پست
لیست
می توانید دیدگاه خود را بنویسید


نام
آدرس ایمیل
وب سایت/بلاگ
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

آپلود عکس دلخواه: